package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.dtos.ArticleInfoDto;
import com.heima.model.article.dtos.CollectionBehaviorDto;
import com.heima.model.article.mess.ArticleVisitStreamMess;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.comment.dtos.CommentPageDto;
import com.heima.model.comment.dtos.StatusCommentDto;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dtos.WmNewsStatisticsDto;

import java.util.Date;

public interface ApArticleService extends IService<ApArticle> {

    /**
     * 根据参数加载文章列表
     * @param loadtype 1为加载更多  2为加载最新
     * @param dto
     * @return
     */
    ResponseResult load(Short loadtype, ArticleHomeDto dto);
    /**
     * 加载首页
     * @param dto
     * @param type
     * @return
     */
    ResponseResult loadFirstPage(ArticleHomeDto dto,Short type);


    /**
     * 保存app端相关文章
     * @param dto
     * @return
     */
    ResponseResult saveArticle(ArticleDto dto) ;

    /**
     * 用户行为回显
     * @param dto
     * @return
     */
    ResponseResult loadArticleBehavior(ArticleInfoDto dto);

    /**
     * 用户收藏
     * @param dto
     * @return
     */
    ResponseResult collectionBehavior(CollectionBehaviorDto dto);

    /**
     * 更新文章的分值  同时更新缓存中的热点文章数据
     * @param mess
     */
    public void updateScore(ArticleVisitStreamMess mess);

    /**
     * 查看文章统计
     * @param wmUserId
     * @param beginDate
     * @param endDate
     * @return
     */

    ResponseResult getNewsDimension(Integer wmUserId, Date beginDate, Date endDate);
    /**
     * 分页展示文章列表
     * @param dto
     * @return
     */

    PageResponseResult getNewsPage(WmNewsStatisticsDto dto);
    /**
     * 展示评论文章
     * @param dto
     * @return
     */
    ResponseResult showListComment(CommentPageDto dto);

    /**
     * 评论数修改
     * @param dto
     * @return
     */
    ResponseResult updateStatusComment(StatusCommentDto dto);

    /**
     * 获取文章评论状态
     * @param articleId
     * @return
     */
    Boolean getIsComment(Long articleId);
}